查看原文
其他

Stata中的小清新命令——添加观测值

爬虫俱乐部 Stata and Python数据分析 2022-03-15
本文作者:赵微微,河南大学经济学院

本文编辑:喻淑敏

技术总编:李婷婷

Stata&Python云端课程来啦!

         为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程Stata基础课程Stata进阶课程Stata文本分析正则表达式网络爬虫基本字符串课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~

导读

长期使用Stata的用户都知道Stata所包含的命令众多、功能各异,有时一个命令有很多option,用以满足用户的不同需求。那有没有一些一看就懂,一用就会的简单命令呢,今天就给大家介绍四个在数据集中添加观测值的小命令,包括生成观测值的obs命令、在数据集中添加或插入观测值的insobs命令、在数据集末尾添加更多观测值的moresobs命令、用n倍的观测值去替换数据集中观测值的expand命令。这几个命令的功能是有一些相似的,但是也有不同之处,大家了解之后就可以根据需要选择合适的命令~

1、obs

对于obs,大家肯定都非常了解了。set obs 可以改变当前数据集的观测值个数。语法也十分简单:

set obs #
#就表示想要生成的观测值的个数,需要注意的是设置的观测值个数必须大于等于当前数据集中的观测值数量。如果数据集中已经包含变量值,设置的新观测值的多余部分则被记为缺失值。  
大家可以根据下边的程序再次感受一下obs的功能:
clear all set obs 10 //生成10个观测值gen x = _n //创建变量x (x=1, 2 ,3·········10) gen y = x^2 //创建变量y (y=1,4,9……………100)set obs 15
程序运行结果分别如图中所示:


2、insobs
insobs命令的功能是添加或者插入观测值。如果不添加选项,直接使用insobs obs则表示在数据集末尾添加观测值。obs则表示想要添加或者插入的观测值的数量。
insobs obs
如果是想要在数据集指定位置之前或之后插入观测值,就可以结合 before(inspos)和 after(inspos)选项使用,语法如下:
insobs obs, before(inspos) | after(inspos)
举个例子吧~ 首先,如果是一个空数据集,这时使用insobs命令可以直接生成观测值,此时insobs 10set obs 10的效果是一样的:
clear allinsobs 10 //生成10个观测值gen x = _n //生成数值

如果数据集中已经存在数据,此时再执行insobs 5,则表示在数据集末尾添加五行观测值,且全部为缺失值。
insobs 5 //在数据集末尾插入观测值

如果在生成10个观测值后,我们想要在这10个观测值中间插入观测值呢?这时就可以使用刚刚提到的before(inspos)after(inspos)选项,使用方法如下:
clear all set obs 10 //生成10个观测值gen x = _n //创建变量x (x=1, 2 ,3·········10) insobs 3, after(5) //在第五个观测值之后增加3行新的观测值

对比原始的数据可知,第六行的观测值原本是6,在第五行下面插入三行观测值后,原先的第六行变成了第九行。如果想要在指定位置之前插入观测值,就可以使用before(inspos)选项:
clear all set obs 10 // 生成10个观测值gen x = _n // 创建变量x (x=1, 2 ,3·········10) insobs 5, before(_N) //在最后一行观测值之前添加5行观测值

3、moreobs
我们知道obs是观测值(observations)的意思,那么顾名思义,moreobs就是在数据集末尾添加更多观测值。moreobs命令的语法如下所示:
moreobs #
如果不指定#的值,则默认为1,而且moreobs命令生成的观测值也是缺失值。
话不多说,直接上案例:
clear all set obs 10 //生成10个观测值gen x = _n //创建变量x (x=1, 2 ,3·········10) gen y = x^2 //创建变量y (y=1,4,9……………100)moreobs 1 //在数据集末尾添加一个观测值,相当于moreobs

那么如果想在数据集末尾添加5行观测值,只需将#改成5即可:
clear all set obs 10 // 生成10个观测值gen x = _n // 创建变量x (x=1, 2 ,3·········10) gen y = x^2 // 创建变量y (y=1,4,9……………100)moreobs 5 // 在数据集末尾添加五行观测值

4、expand
expand命令的功能是用n倍数量的观测值去替换当前数据集中的观测值,其中 n 等于用户给出的数值表达式四舍五入后最接近的整数,如果小于1或等于缺失值 ,则将其解释为1,不进行原数据的复制。expand命令的具体语法如下:
expand [=]exp [if] [in] [, generate(newvar)]
其中if和in可以为expand添加条件和选择范围,generate(newvar)选项可生成新变量newvar,用于标记原始数据(newvar等于0)和复制数据(newvar等于1)。这样的话,若要还原原始数据,则只需要通过保留newvar等于0的数据来实现,即keep if newvar==0
接下来通过一个例子来看一下expand命令的使用效果:
webuse stackxmpl, clear //调入数据stackxmpllist //显示数据

将原始数据复制1份添加在当前数据集中,即用2倍的原始数据替换当前数据,程序如下:
expand 2 list

expand还可以根据指定变量的数值进行替换数据,对于stackxmpl这个数据集,expand b就表示根据变量b的值对数据进行扩充,这里变量b第一、第二行观测值分别为2和6,因此expand b就将当前数据集替换为有两行第一行观测值和六行第二行观测值,即添加了原始数据第一行观测值的1倍和第二行观测值的5倍。
webuse stackxmpl, clear list expand b list

通过上边的介绍,大家是不是了解了这几个命令的不同之处了呢~ 更多好玩好用的命令爬虫俱乐部都会给大家介绍。当然搞科研、盘数据还是要具体学习一下完整的课程最好,有兴趣的同学和老师可以报名参加俱乐部的相关课程哦。

END
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。




腾讯课堂课程二维码








            


 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!











往期推文推荐 

        PCA(主成分分析法)降维——Python实现

       超好用的事件研究法

        如何绘制任泽平《鼓励生育基金》的几幅图

        Python 第六天——字符串

        findname——想要什么找什么

        Python字符串之“分分合合”

        PDF转docx可批量操作?——wordconvert的小技巧

        考研之后,文科生需以“do”躬“do”!

       手绘五星兴家国——用Stata绘制五星红旗

        Seminar丨董事会的性别多样化和企业创新:来自国际的证据

       Python与数据库交互——窗口函数

        Stata之post命令——数据邮递 

        爬虫俱乐部成员的Stata学习经验分享来啦!

       Seminar丨2002年萨班斯·奥克斯利法案的经济后果

        我几乎画出了“隔壁三哥”家的国旗

        Python基础——三大数字类型,你都了解吗?
        如何用Stata绘制带指向性箭头标注的图像       
       Seminar丨荐仆贷款——19世纪中国的信任辅助贷款       【技能篇】多进程队列间通信

Seminar丨公司董事会的人才增长:来自中国的证据

正则表达式--懒惰模式

爬完独立董事的年薪,我的眼镜跌破了!识别旅游“照骗”——看风景名胜是否名副其实主成分分析的Python实现

正则表达式--贪婪模式

Seminar丨谁更重要:高管股权薪酬与财务报告欺诈DOS能量,超乎你想象!

爬虫实战丨走进哈利波特的魔法世界

数据集合并的新路子-frlink命令

Seminar丨附近的公司:利用卫星图像研究本地信息优势

线性同余法生成伪随机数 

[技能篇]多线程爬虫

“好哭”是衡量一部好电影的标准吗?

Stata&Python云端课程来啦!

带你了解Stata中的矩阵

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。





您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存